<?php
class RoleHelper
{
	/**
	 * 增加角色信息
	 */
	public static function add($title)
	{
		try {
			return Role::instance()->add(array(
				'title'	=>	$title,
				'atime'	=>	time(),
				'type'	=>	0,
			));
		}
		catch(Exception $_) {
			return false;
		}
	}
	
	/**
	 * 修改角色信息
	 */
	public static function modify($role_id, $title)
	{
		try {
			return Role::instance()->update($role_id, array('title'=>$title));
		}
		catch(Exception $_) {
			return false;
		}
	}

	/**
	 * 删除一个角色、及角色授权
	 */
	public static function delete($role_id)
	{
		if(Db::get('AclUr')->delete()->where(array('role_id'=>$role_id))->exec() &&
			Db::get('AclRan')->delete()->where(array('role_id'=>$role_id))->exec() )
		{
			return Db::get('Role')->delete()->where(array('role_id'=>$role_id))->exec();
		}
		else {
			return false;
		}
	}

	/**
	 * 增加虚拟用户角色
	 */
	public static function addUserVirtualRole($user_id, $user_name)
	{
		$role_id	=	Role::instance()->add(array(
			'title'	=>	$user_name,
			'type'	=>	2,
		));
		if(!$role_id) {
			return false;
		}
		
		Db::get('AclUr')->insert(array(
			'role_id'	=>	$role_id,
			'user_id'	=>	$user_id,
			'role_type'	=>	2,
		))->exec();

		return Db::get('User')->update(array('role_id'=>$role_id))
								->where(array('user_id'=>$user_id))->exec();
	}

	/**
	 * 增加虚拟组角色
	 */
	public static function addGroupVirtualRole($group_id, $group_title)
	{
		$role_id	=	Role::instance()->add(array(
			'title'	=>	$group_title,
			'type'	=>	1,
		));
		if(!$role_id) {
			return false;
		}

		return Db::get('Group')->update(array('role_id'=>$role_id))
								->where(array('group_id'=>$group_id))->exec();
	}
	
	/**
	 * 修改虚拟组角色信息
	 */
	public static function modifyGroupVirtualRole($group_id, $new_title)
	{
		$role_id	=	Group::instance()->getVirtualRoleId($group_id);
		return Db::get('Role')->update(array('title'=>$new_title))
								->where(array('role_id'=>$role_id))->exec();
	}

	


}
?>